From d51608a2c9fbab4b9e82b851130fa050c91a5a45 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 7 Aug 2020 16:54:09 -0400 Subject: [PATCH] wayland: Don't emit premature configure events We should not emit configure events before we are realized - size changes at this point are not relevant. This gets rid of a mysterious emission of GdkSurface::size-changed with a size of 52x52, that is happening when GtkWindow sets the shadow_width before the window is mapped. --- gdk/wayland/gdksurface-wayland.c | 38 +++++++++++++++++--------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index e05fdc4b63..ccc4fa67ef 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -881,24 +881,6 @@ gdk_wayland_surface_finalize (GObject *object) G_OBJECT_CLASS (gdk_wayland_surface_parent_class)->finalize (object); } -static void -gdk_wayland_surface_resize (GdkSurface *surface, - int width, - int height, - int scale) -{ - GdkDisplay *display; - GdkEvent *event; - - event = gdk_configure_event_new (surface, width, height); - - gdk_wayland_surface_update_size (surface, width, height, scale); - _gdk_surface_update_size (surface); - - display = gdk_surface_get_display (surface); - _gdk_wayland_display_deliver_event (display, event); -} - static gboolean is_realized_shell_surface (GdkWaylandSurface *impl) { @@ -920,6 +902,26 @@ is_realized_popup (GdkWaylandSurface *impl) impl->display_server.zxdg_popup_v6); } +static void +gdk_wayland_surface_resize (GdkSurface *surface, + int width, + int height, + int scale) +{ + gdk_wayland_surface_update_size (surface, width, height, scale); + _gdk_surface_update_size (surface); + + if (is_realized_shell_surface (GDK_WAYLAND_SURFACE (surface))) + { + GdkDisplay *display; + GdkEvent *event; + + event = gdk_configure_event_new (surface, width, height); + display = gdk_surface_get_display (surface); + _gdk_wayland_display_deliver_event (display, event); + } +} + static void gdk_wayland_surface_show (GdkSurface *surface, gboolean already_mapped); static void gdk_wayland_surface_hide (GdkSurface *surface); -- 2.30.2